const esprima = require('esprima');
const estraverse = require('estraverse');
const escodegen = require('escodegen');
const code = `function getUser() {}`;

// 生成ast
const ast = esprima.parseScript(code);

// 转化ast 只会遍历type属性
// estraverse.traverse 方法只有进入和离开两个钩子
estraverse.traverse(ast, {
  // 进入离开修改都是可以的
  entry(node) {
    // console.log('enter -> node.type', node.type);
  },
  leave(node) {
    // console.log('leave -> node.type', node.type);
    if (node.type === 'Identifier') {
      node.name = 'hello';
    }
  },
});

// 生成新的代码
const result = escodegen.generate(ast);
console.log(result);
